The CP/M distribution for XLISP contains the following files:

	ABSTRACT.118    this file)
	xlisp.doc	(documentation)
	xlbind.c	(routines to bind values to symbols)
	xldmem.c	(dynamic memory management routines)
	xleval.c	(the evaluator)
	xlfio.c		(file i/o routines)
	xlio.c		(i/o routines for 'xlread')
	xlisp.c		(the main routine)
	xlisp.h		(the definition file)
	xllist.c	(list functions)
	xlmath.c	(arithmetic functions)
	xlobj.c		(object oriented functions)
	xlkmap.c	(keymap functions)
	xlprin.c	(the printer)
	xlread.c	(the reader)
	xlstr.c		(string functions)
	xlsubr.c	(misc. functions)
	junk.c		(routines needed for the AZTEC C version)
	setjmp.h	(definition file for 'setjmp.asm')
	setjmp.asm	(setjmp and longjmp for AZTEC C)
	alloc.c		(memory allocation routines)
	sbrk.asm	(more memory allocation routines)
	xlisp.com	(an executable for 64K Z-80 systems)
	xlmake.sub	(a file for compiling and assembling XLISP)
	xlisp.lnk	(a command file for linking XLISP)
	pt.lsp		(a sample program)
	t.lsp		(another sample program)

Before compiling XLISP, look at the beginning of the file 'xlisp.h'.
You should check to see that the conditionals defined here are
appropriate for your machine.

You should also edit the command files 'xlmake.sub' and 'xlisp.lnk'
to indicate which disks to expect input from and which disks to place
output on.  They are currently configured for my VT180 system with
four 180K 5 1/4 inch mini-floppies.  I assigned the disks as follows:

	A	the C compiler, assembler, library, 'stdio.h' and 
		'setjmp.h'
	B	unimportant
	C	the XLISP sources and the '.ASM' files generated
		by the compiler
	D	the generated object files

Note that all of the source files expect to find 'stdio.h' and
'setjmp.h' on disk A.

Since XLISP evaluates functions recursively, it tends to use up
a lot of stack space.  Depending on how stack space is allocated
on your machine, you may need to tell the linker to allocate more
than the normal amount of space.  I generated the original XLISP
on a PDT-11/150 under the RT-11 operating system using the DECUS-C
compiler and needed to tell the RT-11 linker to allocate 10000 octal
bytes of stack space in order to make XLISP run reasonably well.

You can gain back about 400 nodes worth of list space by leaving
out the 'Keymap' class.  This can be done by editing the 'xlisp.h'
file under the conditional for 'AZTEC' and removing the definition
for the symbol 'KEYMAPCLASS'.  You only really need to recompile
'xlisp.c' and 'xldmem.c' after changing this definition.  You should
then relink leaving out 'xlkmap.o'.

Have fun and let me know of any problems or suggestions you might
have.

David Betz
